লিঙ্কড লিস্টে ইনসার্ট, ডিলিট এবং সার্চ অপারেশন

লিংকড লিস্ট (Linked Lists) - ডাটা স্ট্রাকচার & অ্যালগরিদম (Data Structure & Algorithms) - Computer Science

281

লিঙ্কড লিস্ট হল একটি ডেটা স্ট্রাকচার যা উপাদানগুলি (নোড) লিঙ্কের মাধ্যমে সংযুক্ত থাকে। প্রতিটি নোডে একটি ডেটা এবং পরবর্তী নোডের জন্য একটি রেফারেন্স (পয়েন্টার) থাকে। লিঙ্কড লিস্টের কিছু মৌলিক অপারেশন হল ইনসার্ট, ডিলিট এবং সার্চ। নিচে এই অপারেশনগুলোর বিস্তারিত আলোচনা করা হলো।

লিঙ্কড লিস্টের গঠন

প্রথমে, একটি লিঙ্কড লিস্টের নোডের গঠন এবং লিঙ্কড লিস্ট তৈরি করা যাক।

class Node:
    def __init__(self, data):
        self.data = data
        self.next = None  # পরবর্তী নোডের জন্য পয়েন্টার

class LinkedList:
    def __init__(self):
        self.head = None  # লিঙ্কড লিস্টের মাথা

১. ইনসার্ট অপারেশন (Insert Operation)

নতুন নোড যুক্ত করার জন্য লিঙ্কড লিস্টে বিভিন্ন উপায়ে ইনসার্ট করা যেতে পারে:

১.১ মাথায় ইনসার্ট (Insert at Head)

def insert_at_head(self, data):
    new_node = Node(data)  # নতুন নোড তৈরি
    new_node.next = self.head  # নতুন নোডের পরবর্তী নোড পুরানো মাথা
    self.head = new_node  # মাথা নতুন নোডকে নির্দেশ করে

১.২ শেষে ইনসার্ট (Insert at Tail)

def insert_at_tail(self, data):
    new_node = Node(data)
    if not self.head:
        self.head = new_node  # যদি মাথা খালি হয়, নতুন নোড মাথা হয়
        return
    last_node = self.head
    while last_node.next:
        last_node = last_node.next  # শেষ নোডে পৌঁছান
    last_node.next = new_node  # নতুন নোড যুক্ত করুন

২. ডিলিট অপারেশন (Delete Operation)

লিঙ্কড লিস্ট থেকে একটি নির্দিষ্ট নোড মুছে ফেলার জন্য ডিলিট অপারেশন ব্যবহার করা হয়।

২.১ নির্দিষ্ট নোড ডিলিট (Delete Specific Node)

def delete_node(self, key):
    current_node = self.head

    # যদি মাথা নিজেই মুছে ফেলতে হয়
    if current_node and current_node.data == key:
        self.head = current_node.next  # মাথাকে আপডেট করুন
        current_node = None  # নোড মুছুন
        return

    # অন্য নোড মুছে ফেলুন
    previous_node = None
    while current_node and current_node.data != key:
        previous_node = current_node
        current_node = current_node.next

    # যদি নোড না পাওয়া যায়
    if not current_node:
        return

    previous_node.next = current_node.next  # নোডটি বাদ দিন
    current_node = None  # নোড মুছুন

৩. সার্চ অপারেশন (Search Operation)

লিঙ্কড লিস্টে একটি নির্দিষ্ট মান খুঁজে বের করার জন্য সার্চ অপারেশন ব্যবহার করা হয়।

সার্চ অপারেশন

def search(self, key):
    current_node = self.head
    while current_node:
        if current_node.data == key:
            return True  # পাওয়া গেছে
        current_node = current_node.next
    return False  # পাওয়া যায়নি

লিঙ্কড লিস্টের উদাহরণ

এখন একটি সম্পূর্ণ উদাহরণ দিয়ে দেখানো যাক, যেখানে ইনসার্ট, ডিলিট এবং সার্চ অপারেশন একত্রে ব্যবহার করা হয়েছে।

class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

class LinkedList:
    def __init__(self):
        self.head = None

    def insert_at_head(self, data):
        new_node = Node(data)
        new_node.next = self.head
        self.head = new_node

    def insert_at_tail(self, data):
        new_node = Node(data)
        if not self.head:
            self.head = new_node
            return
        last_node = self.head
        while last_node.next:
            last_node = last_node.next
        last_node.next = new_node

    def delete_node(self, key):
        current_node = self.head
        if current_node and current_node.data == key:
            self.head = current_node.next
            current_node = None
            return
        previous_node = None
        while current_node and current_node.data != key:
            previous_node = current_node
            current_node = current_node.next
        if not current_node:
            return
        previous_node.next = current_node.next
        current_node = None

    def search(self, key):
        current_node = self.head
        while current_node:
            if current_node.data == key:
                return True
            current_node = current_node.next
        return False

    def print_list(self):
        current_node = self.head
        while current_node:
            print(current_node.data, end=" -> ")
            current_node = current_node.next
        print("None")

# উদাহরণ ব্যবহারের জন্য
linked_list = LinkedList()
linked_list.insert_at_head(10)
linked_list.insert_at_tail(20)
linked_list.insert_at_tail(30)

print("Linked List:")
linked_list.print_list()  # 10 -> 20 -> 30 -> None

linked_list.delete_node(20)
print("After deleting 20:")
linked_list.print_list()  # 10 -> 30 -> None

print("Search for 30:", linked_list.search(30))  # True
print("Search for 20:", linked_list.search(20))  # False

উপসংহার

লিঙ্কড লিস্টে ইনসার্ট, ডিলিট এবং সার্চ অপারেশনগুলি একটি গুরুত্বপূর্ণ ডেটা স্ট্রাকচারের কার্যকারিতা প্রদর্শন করে। এগুলো বিভিন্ন পরিস্থিতিতে ডেটা সংরক্ষণ এবং পরিচালনার জন্য ব্যবহৃত হয়। লিঙ্কড লিস্টের এই মৌলিক অপারেশনগুলোকে ব্যবহার করে আপনি ডেটার প্রয়োজনীয়তা অনুযায়ী কোড তৈরি করতে পারেন।

Promotion

Are you sure to start over?

Loading...